package com.arpa.wms.service;

import com.arpa.wms.domain.dto.GoodsUnitConversionDTO;
import com.arpa.wms.domain.entity.GoodsUnitConversion;
import com.arpa.wms.domain.vo.GoodsUnitConversionVO;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.IService;
import com.qimen.api.request.ItemsSynchronizeRequest;
import com.qimen.api.request.SingleitemSynchronizeRequest;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 商品单位换算 服务类
 * </p>
 *
 * @author LEO
 * @since 2020-08-03
 */
public interface IGoodsUnitConversionService extends IService<GoodsUnitConversion> {

    /**
     * 保存
     * @param entity
     * @return
     */
    @Override
    boolean save(GoodsUnitConversion entity);

    /**
     * 根据code更新实体
     * @param entity
     * @return
     */
    int updateByCode(GoodsUnitConversion entity);

    /**
     * 查询列表
     * @param goodsUnitConversionDTO
     * @return
     */
    List<GoodsUnitConversionVO> queryList(GoodsUnitConversionDTO goodsUnitConversionDTO);
     /**
      *  @author: Allen chen
      *  @Date: 2020/9/1 16:17
      *  @Description: 根据
      */
    List<GoodsUnitConversionVO> queryListByGoodsCodes(List<String> goods);

    /**
     * 查询合计,包含总数
     * @param goodsUnitConversionDTO
     * @return
     */
    GoodsUnitConversionVO queryListSum(GoodsUnitConversionDTO goodsUnitConversionDTO);


    List<GoodsUnitConversion> selectList(LambdaQueryWrapper<GoodsUnitConversion> eq);

    /**
     * 根据 商品code、单位名称 获取 对象
     * @param goodCode
     * @param unitName
     * @return
     */
    GoodsUnitConversion goodsAndUnitName(String goodCode, String unitName);

    /**
     * 同步商品时，根据操作类型判断是插入还是更新
     *
     * @param request
     * @param unitMap
     */
    void batchGoodsUnitConversionSave(ItemsSynchronizeRequest request, Map<String,String> unitMap);

    /**
     * 同步单个商品时，根据操作类型判断是插入还是更新
     *
     * @param request
     * @param unitMap
     */
    void singleGoodsUnitConversionSave(SingleitemSynchronizeRequest request, Map<String,String> unitMap);
}
